// subpackage_volleyball/knowledge_skills/skill_detail.ts

// 排球技能数据类型定义
interface VolleyballSkill {
  id: string;
  title: string;
  description: string;
  image: string;
  content: string;
  keyPoints: string[];
  tags?: string[];
  commonMistakes?: string[];
  practiceImage?: string;
  practiceSteps?: string[];
  progress?: number;
}

Page({
  /**
   * 页面的初始数据
   */
  data: {
    skill: {
      id: "",
      title: "",
      description: "",
      image: "",
      content: "",
      keyPoints: [] as string[],
      tags: [] as string[],
      commonMistakes: [] as string[],
      practiceImage: "",
      practiceSteps: [] as string[],
      progress: 0,
    } as VolleyballSkill,
    isLoading: true,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options: { id?: string; categoryId?: string }) {
    // 从URL参数中获取技能ID和分类ID
    const { id, categoryId } = options;
    if (id) {
      this.loadSkillData(id, categoryId);
    } else {
      console.error("未提供技能ID");
      this.setData({ isLoading: false });
      // 显示错误提示
      wx.showToast({
        title: "获取技能数据失败",
        icon: "error",
      });
    }
  },

  /**
   * 加载技能数据
   */
  loadSkillData(id: string, categoryId?: string) {
    // 从knowledge_skills.ts中获取的实际技能数据
    const skillDataMap: Record<string, VolleyballSkill> = {
      serve_receive: {
        id: "serve_receive",
        title: "一传技术",
        description: "排球一传的基础动作与实战技巧",
        image: "/static/images/knowledge_skill/pass_detail.jpg",
        content:
          "一传作为排球进攻'第一环'，通过稳定接起发球/扣球，为二传组织进攻创造条件，决定球队能否打出有效战术。良好的一传质量能够为二传创造更多战术选择空间，提高球队整体进攻效率。",
        keyPoints: [
          "保持低重心的准备姿势：半蹲，重心靠前，手臂自然放松置于腹前",
          "准确判断来球的旋转和落点：紧盯球尾，预判突然下沉",
          "掌握多种移动步法快速到位：左右/前后移动接不同方向来球",
          "击球部位：小臂内侧形成'垫击平面'，对准来球方向",
          "发力方式：靠下肢蹬地+腰腹传导，配合手臂缓冲",
        ],
        tags: ["基础", "一传"],
        commonMistakes: [
          "准备姿势过高，导致反应速度慢",
          "移动不及时，被迫在不利位置接球",
          "忽略来球旋转，导致判断失误",
          "传球力量控制不当，难以组织有效进攻",
          "'甩臂'导致球失控",
        ],
        practiceImage: "/static/images/knowledge_skill/pass_detail.jpg",
        practiceSteps: [
          "定点接发球：用发球机/队友发球，固定区域接一传，强化'垫击平面'稳定性",
          "移动接一传：结合教练抛球/扣球，左右/前后移动接不同方向来球，练预判与步法",
          "压力训练：接发球同时，模拟对手干扰（如场外声音、假动作），提升实战抗压",
          "接大力发球：降重心、迎球缓冲，用'短平快'垫球给二传，避免球过高被拦",
          "接轻飘发球：紧盯球尾，预判突然下沉，用小臂快速'切'球，控制落点到二传区域",
        ],
        progress: 65,
      },
      set_tech: {
        id: "set_tech",
        title: "二传技术",
        description: "二传的手法控制与战术组织能力",
        image: "/static/images/knowledge_skill/pass_detail.jpg",
        content:
          "二传是串联攻防的'指挥官'，通过精准传球+战术组织，决定进攻节奏、战术多样性，直接影响得分效率。被誉为'场上的教练'，优秀的二传手不仅需要精准的传球技术，更需要出色的战术意识和临场判断能力。",
        keyPoints: [
          "传球手法：正传（掌心向上托球下部）、背传（掌心向后上方）、侧传（身体侧对网）",
          "战术观察：发球后快速扫视全场，判断对手拦网布局、队友跑位",
          "节奏变化：结合快攻（1秒内出球）、强攻（高弧度延误），打乱对手防守预判",
          "控制球的速度、弧度和落点，为攻手创造最佳扣球时机",
          "培养与攻手的默契配合",
        ],
        tags: ["核心", "组织"],
        commonMistakes: [
          "传球轨迹不稳定，影响攻手起跳时机",
          "观察不够全面，忽略场上变化",
          "战术选择单一，容易被对方针对性防守",
          "与攻手配合不够默契",
          "移动不及时，无法弥补一传不足",
        ],
        practiceImage: "/static/images/knowledge_skill/pass_detail.jpg",
        practiceSteps: [
          "定点传球：对墙/固定靶位传球，练手法稳定性（如连续50次背传精准度）",
          "动态传接：与攻手配合'跑传'，攻手移动（前快、背飞路线），二传同步调整传球节奏",
          "模拟实战：设置'拦网墙'（队友举手模拟），二传在干扰下选择传球路线",
          "组织快攻：一传到位时，用'低平背传'给副攻，打对手拦网未成型的时间差",
          "调整强攻：一传半到位时，用'高吊球'给主攻，利用高度突破拦网",
        ],
        progress: 40,
      },
      quick_attack_frame: {
        id: "quick_attack_frame",
        title: "快攻战术框架",
        description: "排球快攻体系的构建与实施方法",
        image: "/static/images/knowledge_skill/attack_detail.jpg",
        content:
          "快攻战术以'速度+突然性'为核心，通过快速传球、攻手快速启动，在对手拦网未完全到位时完成进攻，主打'时间差'。是现代排球比赛中提高进攻节奏、打乱对方防守布局的重要手段。",
        keyPoints: [
          "快攻类型：前快（副攻在二传身前3米内，打平网快球）",
          "背快（二传背后，攻手从3米线冲跳）",
          "短平快（二传身前2米线，平弧度传球，主攻/副攻直线进攻）",
          "传攻配合：二传与攻手'暗号沟通'（眼神、手势），或通过'球速+传球高度'暗示战术",
          "掩护战术：主攻/接应佯攻，吸引拦网，为快攻手创造空当",
        ],
        tags: ["快攻", "配合"],
        commonMistakes: [
          "二传传球时机和高度不合适",
          "攻手移动速度慢，与传球配合不协调",
          "快攻战术单一，缺乏变化",
          "忽略快攻后的跟进保护",
          "传攻配合不够默契",
        ],
        practiceImage: "/static/images/knowledge_skill/attack_detail.jpg",
        practiceSteps: [
          "传攻节奏：二传连续传10组'前快+背快'，攻手记录起跳时机与球的衔接度",
          "多点快攻：设置3个快攻点（前、背、短平），二传随机选择，攻手快速识别并启动",
          "对抗训练：增加1名'模拟拦网手'，快攻时需观察拦网手位置，调整扣球线路",
          "开局抢分：利用对手未进入状态，快速组织'前快+短平快'双快战术",
          "追分阶段：用'梯次快攻'（第一点假快攻，第二点主攻突然加速），破解密集拦网",
        ],
        progress: 30,
      },
      pass_set_coordination: {
        id: "pass_set_coordination",
        title: "传接协同",
        description: "一传与二传的衔接配合技巧",
        image: "/static/images/knowledge_skill/attack_detail.jpg",
        content:
          "传接协同是战术'传送带'，通过技术衔接、节奏配合，让'半到位球也能打出战术'，减少'调整攻'依赖。是排球进攻体系的基础环节，直接影响到进攻的质量和效率。",
        keyPoints: [
          "一传质量分级：'到位球'（二传身前1米内，高1.5米左右）",
          "'半到位球'（二传身侧/身后，需移动传球）",
          "'调整球'（远离二传区域，需大范围移动）",
          "衔接暗号：一传球离手瞬间，用'喊口令'或'手势'提示二传",
          "补位配合：若一传球失控，二传快速移动补位，或自由人/接应临时充当'应急二传'",
        ],
        tags: ["配合", "衔接"],
        commonMistakes: [
          "一传到位率低，增加二传组织难度",
          "二传移动不及时，无法有效弥补一传不足",
          "双方沟通不畅，导致配合失误",
          "对特殊情况（如飘球、重发球）的应对能力不足",
          "缺乏补位意识",
        ],
        practiceImage: "/static/images/knowledge_skill/attack_detail.jpg",
        practiceSteps: [
          "传接反馈：一传后，二传立刻喊'到位/半到位/调整'，强化一传人对'起球质量'的判断",
          "极限传接：用'低质量球'（教练抛高难度球，如边线球、底线球），练一、二传移动+衔接配合",
          "战术转换：设定'一传到位必须打快攻，半到位打平拉开，调整球打强攻'规则",
          "接发球混乱：一传开高球，二传快速后退'跳传'给主攻，打'高调整攻'",
          "防反瞬间：自由人救起扣球（半到位），二传'侧传'给弱侧接应，打对手拦网转身空当",
        ],
        progress: 45,
      },
      blocking_system: {
        id: "blocking_system",
        title: "拦网技术",
        description: "现代排球拦网体系的构建与训练",
        image: "/static/images/knowledge_skill/block_detail.jpg",
        content:
          "拦网是排球'第一道防线'，通过身高+手型+预判，拦截/干扰对手进攻，为后排防守创造'少球'环境，甚至直接得分（拦死）。有效的拦网不仅可以直接得分，还能大幅减轻后排防守压力。",
        keyPoints: [
          "拦网准备：与队友'间距1米'，降重心、手臂上举，紧盯攻手（而非球）",
          "移动取位：'并步移动'（短距离）、'交叉步移动'（长距离）",
          "空中动作：手臂伸直过网（但不触网），手腕下压形成'盖帽式'手型",
          "预判扣球方向：根据攻手助跑路线调整位置",
          "集体拦网协同配合",
        ],
        tags: ["防守", "拦网"],
        commonMistakes: [
          "起跳时机不准确，被对方晃开",
          "拦网手型不正确，导致漏球",
          "集体拦网缺乏沟通，出现漏洞",
          "落地缓冲不足，容易造成运动损伤",
          "只看球不看攻手，导致预判失误",
        ],
        practiceImage: "/static/images/knowledge_skill/block_detail.jpg",
        practiceSteps: [
          "预判训练：看攻手扣球视频片段（5秒），立刻判断扣球线路（直线/斜线）",
          "手型定型：对墙连续'挥臂+压腕'50次，强化'盖帽手型'肌肉记忆",
          "用'泡沫轴'模拟球，练拦网时手型控制（不触轴、封堵范围大）",
          "对抗拦网：与攻手1对1，攻手扣不同线路，拦网手练'移动+手型调整'",
          "防强力主攻：预判'大斜线'，提前外侧移，手臂封堵边线",
        ],
        progress: 50,
      },
      backcourt_defense: {
        id: "backcourt_defense",
        title: "后排防守",
        description: "排球后排防守的体系构建与训练",
        image: "/static/images/knowledge_skill/defense_detail.jpg",
        content:
          "后排防守构建'地面防线'，通过站位、预判、救球技术，弥补拦网不足，争取'防反机会'。核心是'全员防守意识'+'区域覆盖'，良好的后排防守能够有效遏制对方进攻并为反攻创造机会。",
        keyPoints: [
          "防守阵型：'心跟进'（自由人守中场，拦网手后撤防斜线）",
          "'边跟进'（边攻手后撤，守直线+底线）",
          "预判技巧：观察二传传球弧度（高弧度=强攻，低弧度=快攻）",
          "攻手助跑速度（快=短平快，慢=调整攻），提前移动占位",
          "救球技术：'鱼跃救球'（扑边线球）、'滚翻救球'（接底线重扣）",
        ],
        tags: ["防守", "后排"],
        commonMistakes: [
          "站位不合理，出现防守漏洞",
          "移动不及时，导致防守位置不当",
          "重心过高，反应速度慢",
          "防守后的衔接意识不足",
          "忽略预判，被动防守",
        ],
        practiceImage: "/static/images/knowledge_skill/defense_detail.jpg",
        practiceSteps: [
          "阵型切换：30秒内快速切换'心跟进↔边跟进'，强化队员换位速度与默契",
          "随机防守：教练随机抛不同难度球（边线、底线、贴地球），队员用对应救球技术",
          "模拟实战：6人拦防配合，攻手扣球、拦网手拦网，后排防守补位，统计'防起率'",
          "防调整强攻：预判主攻扣大斜线，自由人提前移至边线，用'鱼跃+垫挡'救球",
          "防快攻漏球：若拦网手未拦住快攻，后排边攻手立刻'滚翻救球'",
        ],
        progress: 55,
      },
      school_match_tactics: {
        id: "school_match_tactics",
        title: "校园比赛战术",
        description: "适合校园排球比赛的实用战术体系",
        image: "/static/images/knowledge_skill/quick_attack_detail.jpg",
        content:
          "校园比赛战术结合校园球员'技术不全面、体力有限'特点，设计简单、易执行、容错率高的战术，主打'团队配合'+'利用身高优势'。针对校园比赛的实际情况，介绍简单实用、易于掌握的战术体系。",
        keyPoints: [
          "发球战术：'上手飘球'（简单易学，球路飘忽难接）",
          "'发球找主攻'（发到对方主攻站位，打乱其进攻准备）",
          "接发+进攻：'固定两点攻'（二传只传给主攻、副攻，减少决策压力）",
          "防守简化：固定'边跟进'（边攻手后撤），避免复杂换位",
          "自由人守中场，专注'接重扣'",
        ],
        tags: ["校园", "实用"],
        commonMistakes: [
          "战术过于复杂，队员难以掌握",
          "忽略基本技术的重要性",
          "缺乏灵活调整能力，过于死板",
          "团队配合不够默契",
          "未能充分利用身高优势",
        ],
        practiceImage: "/static/images/knowledge_skill/quick_attack_detail.jpg",
        practiceSteps: [
          "每天10分钟'发球精准度'（发球到对方'接发球薄弱区'：如2、4号位之间）",
          "5人接发+二传组织，重复'到位球→前快，半到位球→主攻强攻'，练默契",
          "用'抛球代替扣球'，练后排'垫挡救球'，强化基础防守",
          "开局抢分：发球找对方'最弱接发人'，接发混乱时，二传直接传'高球给主攻'",
          "落后追分：副攻佯攻前快，二传突然传'背平球'给接应",
        ],
        progress: 35,
      },
      recreational_court_tactics: {
        id: "recreational_court_tactics",
        title: "野球场战术",
        description: "非正式比赛环境下的灵活战术应用",
        image: "/static/images/knowledge_skill/quick_attack_detail.jpg",
        content:
          "野球场战术针对'人员随机（常缺人）、规则宽松（可自由换位）、娱乐性强'特点，设计灵活、多变、强调'趣味性'的战术，主打'随机应变'+'利用场地'。适合各种非正式比赛中发挥更好的水平。",
        keyPoints: [
          "3人局（缺人）：'轮流二传'（每人打1轮二传，其余人进攻+防守）",
          "用'两次击球进攻'（一传球直接打，不强制二传）",
          "5人局（常规）：'自由换位'（进攻后可换防守位），强化'全能性'",
          "创意发球：'踢发球、头顶发球，增加趣味性'",
          "利用场地障碍物：扣球'擦障碍物变线'，或防守时'借力反弹'",
        ],
        tags: ["野球场", "灵活"],
        commonMistakes: [
          "对队友期望过高，导致配合失误",
          "战术选择不切实际，难以执行",
          "缺乏沟通，场上混乱",
          "不适应对手的非常规打法",
          "未能充分利用野球场的特点",
        ],
        practiceImage: "/static/images/knowledge_skill/quick_attack_detail.jpg",
        practiceSteps: [
          "快速了解：比赛前快速了解队友特点和水平",
          "简单沟通：建立基本的场上沟通方式",
          "基础配合：练习1-2种简单有效的配合模式",
          "灵活调整：根据比赛进程及时调整战术",
          "人员不齐：3人局时，二传直接'上手发球+进攻'（一人多职）",
        ],
        progress: 25,
      },
    };

    // 根据ID获取对应的技能数据，如果没有找到则使用默认数据
    const skillData = skillDataMap[id] || {
      id: id,
      title: "排球技能详情",
      description: "这是一个排球技能的详细描述",
      image: "/static/images/common/volleyball_skill.png",
      content: "详细讲解了该排球技能的技术要点、训练方法和实战应用。",
      keyPoints: ["保持正确的身体姿势", "掌握准确的发力时机"],
      tags: ["排球", "技能"],
      commonMistakes: ["动作变形导致力量分散", "判断不准球的落点"],
      practiceImage: "/static/images/knowledge_skill/background.jpg",
      practiceSteps: ["准备姿势", "判断来球"],
      progress: 0,
    };

    // 设置技能数据
    this.setData({
      skill: skillData,
      isLoading: false,
    });

    // 更新页面标题
    wx.setNavigationBarTitle({
      title: skillData.title,
    });
  },

  /**
   * 根据ID获取技能标题（模拟）
   */
  getSkillTitleById(id: string) {
    // 在实际应用中，这里应该从数据库或API中获取
    const titles: Record<string, string> = {
      "1": "排球发球技巧",
      "2": "排球传球技术",
      "3": "排球垫球基础",
      "4": "排球扣球发力",
      "5": "拦网技术要领",
    };
    return titles[id] || "排球技能详情";
  },

  /**
   * 返回上一页
   */
  onBackPress() {
    wx.navigateBack();
  },

  /**
   * 前往详细练习
   */
  goToPractice() {
    // 在实际应用中，这里应该从数据库或API中获取
    // 这里使用模拟数据来演示
    // 显示练习提示
    wx.showToast({
      title: "前往练习功能开发中",
      icon: "none",
    });

    // 以下是未来可能的实现方式
    /*
    wx.navigateTo({
      url: `/subpackage_volleyball/practice/practice_detail?id=${this.data.skill.id}`
    });
    */
  },
});
